#ifndef __MARS_GOBJECT_GAMEOBJECT_H__
#define __MARS_GOBJECT_GAMEOBJECT_H__

#include "MarsObject.h"
#include "MarsSpatial.h"
#include "MarsSceneNode.h"

using namespace SceneGraph;

namespace GObject
{

class Camera;
class Component;
class Renderable;

class GameObject : public SceneNode
{
public:
									GameObject( SceneNode* pParentNode = NULL );
									GameObject( const std::string& strName, SceneNode* pParentNode = NULL );
	virtual							~GameObject();

	virtual void					Render( const Camera* pCamera, RenderObjectArray& arrRenderObjects );

	void							AddComponent( Component* pComponent );

private:
	Renderable*						m_pRenderable;
};

inline GameObject::GameObject( SceneNode* pParentNode )
	: SceneNode( pParentNode )
	, m_pRenderable( NULL )
{

}

inline GameObject::GameObject( const std::string& strName, SceneNode* pParentNode )
	: SceneNode( strName, pParentNode )
	, m_pRenderable( NULL )
{

}

} // end of namespace GObject


#endif // end of #ifndef __MARS_GOBJECT_GAMEOBJECT_H__